package main

import "fmt"

func printSlice(s []int) {
	fmt.Printf("len = %d, slice = %v, cap = %d\n", len(s), s, cap(s))
}

func main() {

	// 方法1: 声明slice1是一个切片，初始化为[1, 2, 3]， 长度为3
	slice1 := []int{1, 2, 3}
	printSlice(slice1)

	// 方法2：声明切片，但未分配空间
	var slice2 []int
	slice2 = make([]int, 3)
	printSlice(slice2)

	// 方法3：简化写法
	var slice3 []int = make([]int, 3)
	printSlice(slice3)

	// 方法4：
	slice4 := make([]int, 3, 5)
	printSlice(slice4)

	// 切片追加
	slice4 = append(slice4, 4)
	printSlice(slice4)

	slice4 = append(slice4, 4)
	printSlice(slice4)

	slice4 = append(slice4, 4)
	printSlice(slice4)
}
